home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / tos_updt / fmcity / palcom / auto / script / autocom.mx < prev    next >
Text File  |  1995-03-24  |  21KB  |  694 lines

  1. //--------------------------------------------------------------------------//
  2. //                        PALCOM V2.1 L10                        //
  3. //                 自動通信:自動通信通信部メインスクリプト                    //
  4. //                                                                            //
  5. //                                        CopyRight(C) 1994/10/20                //
  6. //                                FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED    //
  7. //                                        written by C-cube Soft T.Nakamura    //
  8. //--------------------------------------------------------------------------//
  9. event    @OPEN.EXTERN {
  10.     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  11.     //+++                            前処理                              +++//
  12.     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  13.     $OpenFlg = #FALSE;
  14.     $LogId   = #FALSE;
  15.     $IdxId   = #FALSE;
  16.     sys.global( $OpenFlg      );
  17.     sys.global( $IdxId        );
  18.     sys.global( $LogId        );
  19.     dialog.openProg([[],"    初  期  設  定  中  で  す     ",[]],"",#FALSE );
  20.  
  21.     //---   設定データの取得   ---//
  22.     $dataList  = AUTO.getAutoData();
  23.     $cenList   = list.getNth( $dataList,  1 );
  24.     if( list.get1st( $cenList ) == 0 ) {
  25.         //---   デフォルトのアクセスポイントを使用する   ---//
  26.         list.del1st( $cenList );
  27.         list.put1st( $cenList, list.getNth( AUTO.getDefaultData(), 2 ));
  28.         if( list.get1st( $cenList ) == 0 ) {
  29.             //---   デフォルトのアクセスポイントが設定されていない   ---//
  30.             dialog.close();
  31.             $saveXsize = dialog.getDefaultXSize();
  32.             dialog.setDefaultXSize( 352 );
  33.             sys.pushCursor( 80 );
  34.             dialog.ask([
  35.                     "━━━━━━━━━━   自動通信   ━━━━━━━━━━",
  36.                     "",
  37.                     "       標準アクセスポイントが設定されていません。     ",
  38.                     "",
  39.                     "  「自動通信の設定」でアクセスポイントの設定を行うか、",
  40.                     "「自動通信の環境」の「接続環境」で標準アクセスポイント",
  41.                     "の設定を行ってください。                              ",
  42.                     ""],["確認"] );
  43.             sys.popCursor();
  44.             dialog.setDefaultXSize( $saveXsize );
  45.             return;
  46.         }
  47.     }
  48.     $mailList  = list.getNth( $dataList,  2 );
  49.     $forumList = list.getNth( $dataList,  3 );
  50.     $hpList    = list.getNth( $dataList,  4 );
  51.     $bbsList   = list.getNth( $dataList,  5 );
  52.     $topList   = list.getNth( $dataList,  6 );
  53.     $expList   = list.getNth( $dataList,  7 );
  54.     $logList   = list.getNth( $dataList,  8 );
  55.     $expList2  = list.getNth( $dataList,  9 );
  56.     $newsList  = list.getNth( $dataList, 10 );
  57.     $rsTable   = list.get1st( list.getNth( $dataList, 11 ));
  58.  
  59.     //---   アクセスポイント情報の取得   ---//
  60.     $apId = trd.init( 9120, -1 );
  61.     $path = str.join([$$DIR.STANDARD, "PUBLIC\\APUSER.TRD"],"" );
  62.     trd.load( $apId, $path );
  63.     $apList = AUTO.getAPlist( $apId, list.get1st( $cenList ));
  64.     trd.end( $apId );
  65.     if( list.size( $apList ) == 0 ) {
  66.         dialog.close();
  67.         $saveXsize = dialog.getDefaultXSize();
  68.         dialog.setDefaultXSize( 352 );
  69.         sys.pushCursor( 80 );
  70.         dialog.ask(["━━━━━━━━━━   自動通信   ━━━━━━━━━━",
  71.                     "",
  72.                     "  設定されているアクセスポイントの情報が存在しません。",
  73.                     "  アクセスポイントの設定をやり直してください。        ",
  74.                     ""],["確認"] );
  75.         sys.popCursor();
  76.         dialog.setDefaultXSize( $saveXsize );
  77.         return;
  78.     }
  79.     $apList = list.get1st( $apList );
  80.  
  81.     //---   電話番号の組み立て   ---//
  82.     $telNo = "";
  83.     if(( list.getNth( $apList, 2 ) != list.get1st( AUTO.getDefaultData()))&&
  84.        ( list.getNth( $apList, 2 ) != "" )) {
  85.         $telNo = str.join([list.getNth( $apList, 2 ), "-"], "" );
  86.     }
  87.     $telNo = str.join([$telNo, list.getNth( $apList, 6 )], "" );
  88.  
  89.     //---   MNP 設定の有効/無効チェック   ---//
  90.     $mnpFlg = #FALSE;
  91.     foreach( $a, list.getNth( $apList, 5 )) {
  92.         if( $a == "MNP" ) {
  93.             $mnpFlg = #TRUE;
  94.             exit;
  95.         }
  96.     }
  97.  
  98.     //---   自動通信設定でローカルな設定値の設定   ---//
  99.     $$BBS.TEL1        = $telNo;
  100.     $$MDM.EC          = $mnpFlg;
  101.     $$BBS.REDIAL      = list.getNth( $cenList, 2 );
  102.     $$BBS.REDIAL.WAIT = list.getNth( $cenList, 3 );
  103.     if(( gdb.getMnpClass( $$COM.PORT ) >= 5 )&&( $mnpFlg == #TRUE )) {
  104.         table( list.getNth( list.getNth( $apList, 7 ), 2 )) {
  105.             1 { $$COM.BAUD = 1200;    }
  106.             2 { $$COM.BAUD = 2400;    }
  107.             3 { $$COM.BAUD = 4800;    }
  108.             4 {    $$COM.BAUD = 4800;    }
  109.             5 { $$COM.BAUD = 9600;    }
  110.             6 { $$COM.BAUD = 9600;    }
  111.             7 { $$COM.BAUD = 9600;    }
  112.             8 {    $$COM.BAUD = 19200;    }
  113.         }
  114.     } else {
  115.         $comBps = gdb.getComBps( $$COM.PORT );
  116.         table( list.getNth( list.getNth( $apList, 7 ), 2 )) {
  117.             1 { $$COM.BAUD = 300;    }
  118.             2 { $$COM.BAUD = 1200;    }
  119.             3 { $$COM.BAUD = 2400;    }
  120.             4 {
  121.                 if( $comBps & 0x08 ) {
  122.                     $$COM.BAUD = 2400;
  123.                 } else {
  124.                     $$COM.BAUD = 1200;
  125.                 }
  126.             }
  127.             5 { $$COM.BAUD = 9600;    }
  128.             6 { $$COM.BAUD = 9600;    }
  129.             7 { $$COM.BAUD = 9600;    }
  130.             8 {
  131.                 if( $comBps & 0x0100 ) {
  132.                     $$COM.BAUD = 19200;
  133.                 } else {
  134.                     $$COM.BAUD = 9600;
  135.                 }
  136.             }
  137.         }
  138.     }
  139.     if( $rsTable == "" ) {
  140.         $$TRM.SET.RSTABLE = #FALSE;
  141.     } else {
  142.         $$TRM.SET.RSTABLE = #TRUE;
  143.         $$TRM.RSTABLE     = $rsTable;
  144.     }
  145.  
  146.     //---   ログインのみ以外の時の設定   ---//
  147.     if( list.getNth( $logList, 2 ) != #TRUE ) {
  148.         //---   ログファイルをオープンし、ログファイルに割り付ける   ---//
  149.         if( str.right( $$DIR.LOG, 1 ) != "\\" ) {
  150.             $logName  = str.join([$$DIR.LOG, "\\NIFUSER.LOG"], "" );
  151.         } else {
  152.             $logName  = str.join([$$DIR.LOG, "NIFUSER.LOG"], "" );
  153.         }
  154.         $LogId = file.open( $logName, "", 1 );
  155.         file.seek( $LogId, 0, 2 );
  156.         AUTO.setLogFileName( $logName );
  157.         AUTO.setLogFileId( $LogId );
  158.  
  159.         //---   インデックスファイルのオープンを行う   ---//
  160.         if( str.right( $$DIR.LOG, 1 ) != "\\" ) {
  161.             $idxName  = str.join([$$DIR.LOG, "\\NIFUSER.IDX"], "" );
  162.         } else {
  163.             $idxName  = str.join([$$DIR.LOG, "NIFUSER.IDX"], "" );
  164.         }
  165.         $flg = file.exist( $idxName );
  166.         if( $flg == #TRUE ) {
  167.             $fd = file.open( $idxName, "", 1 );
  168.             file.seek( $fd, 0, 2 );
  169.             $size = file.tell( $fd );
  170.             file.close( $fd );
  171.             if( $size < 255 ) {
  172.                 dialog.close();
  173.                 $saveXsize = dialog.getDefaultXSize();
  174.                 dialog.setDefaultXSize( 276 );
  175.                 sys.pushCursor( 80 );
  176.                 $ret = dialog.ask([
  177.                             "━━━━━━  自動通信の実行  ━━━━━━",
  178.                             "",
  179.                             "  インデックスファイルに異常があります。  ",
  180.                             "  再初期化し、実行します。                ",
  181.                             ""],["取消", "実行"] );
  182.                 sys.popCursor();
  183.                 dialog.setDefaultXSize( $saveXsize );
  184.                 if( $ret == 1 ) {
  185.                     file.delete( $idxName );
  186.                     $flg = #FALSE;
  187.                 } else {
  188.                     file.close( $LogId );
  189.                     $LogId = #FALSE;
  190.                     return;
  191.                 }
  192.             }
  193.         }
  194.         $IdxId    = lsi.open( $idxName );
  195.  
  196.         //---   インデックスファイルが共有オープンされている場合は   ---//
  197.         //---                                       実行を抑制する   ---//
  198.         if( lsi.share?( $IdxId ) == #TRUE ) {
  199.             dialog.close();
  200.             $saveXsize = dialog.getDefaultXSize();
  201.             dialog.setDefaultXSize( 276 );
  202.             sys.pushCursor( 80 );
  203.             dialog.ask(["━━━━━━  自動通信の実行  ━━━━━━",
  204.                         "",
  205.                         "  文書整理/作成が実行されています。      ",
  206.                         "  自動通信を実行する場合は、文書整理/作成",
  207.                         "を一度終了させて下さい。                  ",
  208.                         ""],["確認"] );
  209.             sys.popCursor();
  210.             dialog.setDefaultXSize( $saveXsize );
  211.             file.close(   $LogId );
  212.             lsi.close(    $IdxId );
  213.             $LogId = #FALSE;
  214.             $IdxId = #FALSE;
  215.             return;
  216.         }
  217.         $list = lsi.getInfo( $IdxId );
  218.         if( $flg == #FALSE ) {
  219.             list.delNth( $list, 2 );
  220.             list.putNth( $list, 1, list.getLast( str.split( $logName, "\\" )));
  221.             list.delNth( $list, 3 );
  222.             list.putNth( $list, 2, 1 );
  223.             list.delNth( $list, 4 );
  224.             list.putNth( $list, 3, list.get1st( AUTO.getSetName()));
  225.             lsi.setInfo( $IdxId, $list );
  226.         }
  227.         AUTO.setIdxFileId( $IdxId );
  228.         AUTO.setIdxNum( list.get1st( $list ));
  229.  
  230.         //---   送信文書のマーカの設定   ---//
  231.         AUTO.getUpListAll();
  232.     }
  233.  
  234.     //---   自動通信実行情報の設定   ---//
  235.     local.setAutoName( AUTO.getDBfileName(), $idxName,
  236.                        AUTO.getSetName(),    $logName );
  237.  
  238.  
  239.  
  240.     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  241.     //+++                   NIFTYにログインする                   +++//
  242.     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  243.     AUTO.setWaitChar();
  244.     $AUTO.WAIT15 = AUTO.getWaitChar( 15 );
  245.     $AUTO.WAIT60 = AUTO.getWaitChar( 60 );
  246.     event.mask( @ERROR.PROTOCOL );
  247.     event.mask( @DISCONNECT );
  248.     event.mask( @CONNECT );
  249.     sys.stopIntRec();
  250.     dialog.close();
  251.  
  252.     //---   ダイアルスクリプト起動   ---//
  253.     $path = str.join([$$DIR.STANDARD, "SCRIPT\\MANUDIAL.MX"], "" );
  254.     script.openExtern( $path, #FALSE, [] );
  255.     if( $$USER.DEFINED.9 != #TRUE ) {
  256.         if( $LogId != #FALSE ) {
  257.             file.close( $LogId );
  258.             $LogId = #FALSE;
  259.         }
  260.         if( $IdxId != #FALSE ) {
  261.             lsi.close( $IdxId );
  262.             $IdxId = #FALSE;
  263.         }
  264.         sys.startIntRec();
  265.         goto DISCONNECT;
  266.     }
  267.     $OpenFlg = #TRUE;
  268.  
  269.     //---   自動ログインスクリプト起動   ---//
  270.     $path = str.join([$$DIR.STANDARD, "AUTO\\SCRIPT\\NIFLIN.MX"], "" );
  271.     table( list.getNth( $apList, 3 )) {
  272.         "ROAD1"        { $$USER.DEFINED.9 = 1; }
  273.         "ROAD2"        { $$USER.DEFINED.9 = 2; }
  274.         "ROAD3"        { $$USER.DEFINED.9 = 3; }
  275.         "ROAD4"        { $$USER.DEFINED.9 = 4; }
  276.     }
  277.     script.openExtern( $path, #FALSE, [] );
  278.     if( $$USER.DEFINED.9 != #TRUE ) {
  279.         if( $LogId != #FALSE ) {
  280.             file.close( $LogId );
  281.             $LogId = #FALSE;
  282.         }
  283.         if( $IdxId != #FALSE ) {
  284.             lsi.close( $IdxId );
  285.             $IdxId = #FALSE;
  286.         }
  287.         sys.startIntRec();
  288.         local.comClose();
  289.         $OpenFlg = #FALSE;
  290.         event.unmask( @ERROR.PROTOCOL );
  291.         event.unmask( @DISCONNECT );
  292.         event.unmask( @CONNECT );
  293.         $backXsize = dialog.getDefaultXSize();
  294.         dialog.setDefaultXSize( 228 );
  295.         sys.pushCursor( 80 );
  296.         if( $$USER.DEFINED.9 == #ERROR ) {
  297.             dialog.ask(["━━━━━ 自動ログイン ━━━━━",
  298.                         "",
  299.                         "    自動ログインに失敗しました。  ",
  300.                         ""],["確認"] );
  301.         } elif( $$USER.DEFINED.9 == #TOUT ) {
  302.             dialog.ask(["━━━━━ 自動ログイン ━━━━━",
  303.                         "",
  304.                         "  センターが混雑しているため接続を",
  305.                         "中断しました。                    ",
  306.                         "  時間をおいて再度接続して下さい。",
  307.                         ""],["確認"] );
  308.         } else {
  309.             dialog.ask(["━━━━━ 自動ログイン ━━━━━",
  310.                         "",
  311.                         "    自動ログインを中断しました。  ",
  312.                         ""],["確認"] );
  313.         }
  314.         sys.popCursor();
  315.         dialog.setDefaultXSize( $backXsize );
  316.         return;
  317.     }
  318.  
  319.     //---   ここからログを開始する   ---//
  320.     if( list.getNth( $logList, 2 ) != #TRUE ) {
  321.         xfer.recText( $LogId, [] );
  322.     }
  323.  
  324.     //---   前回ログアウト時間のチェック   ---//
  325.     $infomation = #FALSE;
  326.     comtable( $a, 300 ) {
  327.         ">\w\w" { exit; }
  328.         "前回LOG OUT %2d/%2d/%2d    %2d:%2d:%2d"    {
  329.             $time1 = str.right( $a, 20 );
  330.             $time2 = list.getNth( trd.getData( AUTO.getTrdId(), [1,3] ), 2 );
  331.             if(( $time2 != "" )&&( $time1 != $time2 )) {
  332.                 $infomation = #TRUE;
  333.             }
  334.             exit;
  335.         }
  336.         interval {
  337.             if( com.isCD( $$COM.PORT ) == #FALSE ) {
  338.                 AUTO.disconnect( #FALSE );
  339.                 goto COM.END;
  340.             }
  341.         }
  342.     }
  343.  
  344.     //---   ログインのみの場合はここで終了   ---//
  345.     if( list.getNth( $logList, 2 ) == #TRUE ) {
  346.         if( $infomation == #TRUE ) {
  347.             $saveXsize = dialog.getDefaultXSize();
  348.             dialog.setDefaultXSize( 312 );
  349.             sys.pushCursor( 80 );
  350.             dialog.ask(["━━━━━━  NIFTY-Serve ログイン  ━━━━━━",
  351.                         "",
  352.                         "前回ログアウト以降にログインした形跡があります。",
  353.                         "",
  354.                         str.join([" 前回ログアウト記録時間:", $time2], "" ),
  355.                         str.join([" 最終ログアウト形跡時間:", $time1], "" ),
  356.                         ""],["確認"]);
  357.             sys.popCursor();
  358.             dialog.setDefaultXSize( $saveXsize );
  359.         }
  360.         sys.startIntRec();
  361.         goto MANUAL.COM;
  362.     }
  363.  
  364.     //---   自動通信開始   ---//
  365.     AUTO.setComFlg( #TRUE );
  366.     sys.pushCursor( 80 );
  367.     if( $infomation == #FALSE ) {
  368.         $strList = [[],"          自  動  通  信  実  行  中          ",[]];
  369.     } else {
  370.         $strList = [[],
  371.                     "          自  動  通  信  実  行  中          ",[],
  372.                     "                                              ",
  373.                     "前回ログアウト以降にログインした形跡があります",
  374.                     "",
  375.                     str.join([" 前回ログアウト記録時間:", $time2], "" ),
  376.                     str.join([" 最終ログアウト形跡時間:", $time1], "" )];
  377.     }
  378.     dialog.openProg( $strList, " 中断 ", #FALSE );
  379.     AUTO.setHaltFlg( 0 );
  380.     sys.enableInt("AUTO.interruptFunc");
  381.  
  382.  
  383.  
  384.     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  385.     //+++                        自動通信の実体                          +++//
  386.     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  387.     //---   コマンド待ちの状態になるまで待つ       ---//
  388.     //---   途中のフラッシュニュースの記録も行う   ---//
  389.     $flg = #FALSE;
  390.     comtable( $a, 1200 ) {
  391.         $AUTO.WAIT60    { com.putString("\r",[]); }
  392.         ">\w\w"        { exit; }                // プロンプト
  393.         "☆フラッシュニュース☆"    {            // フラッシュニュースの開始
  394.             $flg  = #TRUE;
  395.             $list = [7,1];
  396.             $ptr  = file.tell( $LogId ) + 2;
  397.         }
  398.         "  %b%d/%d%d %b%d:%d%d  " {                // "  xx/xx xx:xx  "にマッチ
  399.             if( $flg == #TRUE ) {
  400.                 com.getString( 0, #TRUE, #TRUE );
  401.                 $ptr2 = file.tell( $LogId );
  402.             }
  403.         }
  404.         interval    {
  405.             if( com.isCD( $$COM.PORT ) == #FALSE ) {
  406.                 AUTO.disconnect( #FALSE );
  407.                 goto COM.END;
  408.             }
  409.         }
  410.     }
  411.     if( $flg == #TRUE ) {
  412.         //---   フラッシュニュースの記録を       ---//
  413.         //---   インデックスファイルに書き込む   ---//
  414.         AUTO.writeIdx([[0x501,[15,[1,5,-1,-1,-1,-1,-1,-1,-1,-1]]],
  415.                        [0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
  416.     }
  417.  
  418.     //---   FJCUG(富士通全社パソコン通信サービス)の場合   ---//
  419.     //---                     無理矢理 NIFTY-Serve へ入る   ---//
  420.     if( $$BBS.TYPE == "CUG" ) {
  421.         AUTO.sendCommand("GO NIF");
  422.         AUTO.sendCommand("1");
  423.     }
  424.  
  425.     sys.startIntRec();
  426.  
  427.     //---   フォーラムを巡回する   ---//
  428.     if(( list.getNth( $forumList, 1 ) == #TRUE )||
  429.        ( list.getNth( $forumList, 2 ) == #TRUE )||
  430.        ( list.getNth( $forumList, 3 ) == #TRUE )) {
  431.         $path = str.join([$$DIR.STANDARD, "AUTO\\SCRIPT\\FORMCOM.MX"], "" );
  432.         script.openExtern( $path, #FALSE, [] );
  433.         if( AUTO.getHaltFlg() != 0 ) {
  434.             goto COM.END;
  435.         }
  436.     }
  437.  
  438.     //---   HPを巡回する   ---//
  439.     if(( list.getNth( $hpList, 1 ) == #TRUE )||
  440.        ( list.getNth( $hpList, 2 ) == #TRUE )) {
  441.         $path = str.join([$$DIR.STANDARD, "AUTO\\SCRIPT\\HPCOM.MX"], "" );
  442.         script.openExtern( $path, #FALSE, [] );
  443.         if( AUTO.getHaltFlg() != 0 ) {
  444.             goto COM.END;
  445.         }
  446.     }
  447.  
  448.     //---   メールのUP/DOWN   ---//
  449.     $flg = #FALSE;
  450.     if(( list.getNth( $mailList, 1 ) == #TRUE )||
  451.        ( list.getNth( $mailList, 2 ) == #TRUE )) {
  452.         $path = str.join([$$DIR.STANDARD,"AUTO\\SCRIPT\\MAILCOM.MX"],"" );
  453.         script.openExtern( $path, #FALSE, [] );
  454.         if( AUTO.getHaltFlg() != 0 ) {
  455.             goto COM.END;
  456.         }
  457.     }
  458.  
  459.     //---   掲示板を読む   ---//
  460.     if(( list.getNth( $bbsList, 1 ) == #TRUE )||
  461.        ( list.getNth( $bbsList, 2 ) == #TRUE )) {
  462.         $path = str.join([$$DIR.STANDARD, "AUTO\\SCRIPT\\BBSCOM.MX"], "" );
  463.         script.openExtern( $path, #FALSE, [] );
  464.         if( AUTO.getHaltFlg() != 0 ) {
  465.             goto COM.END;
  466.         }
  467.     }
  468.  
  469.     //---   フォーラム一覧を取得する   ---//
  470.     if( list.getNth( $forumList, 4 ) == #TRUE ) {
  471.         $path = str.join([$$DIR.STANDARD, "AUTO\\SCRIPT\\FLISTCOM.MX"], "" );
  472.         script.openExtern( $path, #FALSE, [] );
  473.         if( AUTO.getHaltFlg() != 0 ) {
  474.             goto COM.END;
  475.         }
  476.     }
  477.  
  478.     //---   エグゼクティブオプションの設定   ---//
  479.     if( list.get1st( $expList  ) == #TRUE ) {
  480.         $$USER.DEFINED.9 = $expList2;
  481.         $path = str.join([$$DIR.STANDARD, "AUTO\\SCRIPT\\EXPCOM.MX"], "" );
  482.         script.openExtern( $path, #FALSE, [] );
  483.         if( AUTO.getHaltFlg() != 0 ) {
  484.             goto COM.END;
  485.         }
  486.     }
  487.  
  488.     //---   フラッシュニュースの設定   ---//
  489.     if(( list.get1st( $expList  ) == #TRUE )&&
  490.        ( list.get1st( $expList2 ) == #TRUE )) {
  491.         //---   エグゼクティブオプションを解除した場合は     ---//
  492.         //---     同時にフラッシュニュースも解除されるので   ---//
  493.         //---       フラッシュニュース設定の巡回を抑制する   ---//
  494.         ;
  495.     } elif( list.getNth( $expList, 2 ) == #TRUE ) {
  496.         $$USER.DEFINED.9 = $newsList;
  497.         $path = str.join([$$DIR.STANDARD, "AUTO\\SCRIPT\\NEWSCOM.MX"], "" );
  498.         script.openExtern( $path, #FALSE, [] );
  499.         if( AUTO.getHaltFlg() != 0 ) {
  500.             goto COM.END;
  501.         }
  502.     }
  503.  
  504.     //---   課金情報を見る   ---//
  505.     if( list.getNth( $topList, 1 ) == #TRUE ) {
  506.         $path = str.join([$$DIR.STANDARD, "AUTO\\SCRIPT\\BILLCOM.MX"], "" );
  507.         script.openExtern( $path, #FALSE, [] );
  508.         if( AUTO.getHaltFlg() != 0 ) {
  509.             goto COM.END;
  510.         }
  511.     }
  512.  
  513.     //---   センターから抜ける                     ---//
  514.     //---   途中のフラッシュニュースの記録も行う   ---//
  515.     $LogId = AUTO.getLogFileId();
  516.     $IdxId = AUTO.getIdxFileId();
  517.     com.putString("BYE\r", [] );
  518.     sys.stopIntRec();
  519.     $haltFlg = #FALSE;
  520.     $exitFlg = #FALSE;
  521.     $flg     = #FALSE;
  522.     comtable( $a, 1200 ) {
  523.         $AUTO.WAIT60         { exit;                                }
  524.         "01+"                { $haltFlg = #TRUE; exit;            }
  525.         "ございました。\n"    {
  526.             sys.deleteInt("AUTO.interruptFunc");
  527.             xfer.endText( $LogId );
  528.         }
  529.         "*\w\w"                {
  530.             $haltFlg = #TRUE;
  531.             time.delay( 1 );
  532.             com.putString("OFF\r",[]);
  533.         }
  534.         "LOG OUT --- %2d/%2d/%2d    %2d:%2d:%2d"    {
  535.                                                 // ログアウト時間の記録
  536.             trd.setData( AUTO.getTrdId(), [1,3], str.right( $a, 20 ));
  537.             AUTO.setTrdUpdateFlg();
  538.         }
  539.         "☆フラッシュニュース☆"    {            // フラッシュニュースの開始
  540.             $flg  = #TRUE;
  541.             $list = [7,1];
  542.             $ptr  = file.tell( $LogId ) + 2;
  543.         }
  544.         "  %b%d/%d%d %b%d:%d%d  " {                // "  xx/xx xx:xx  "にマッチ
  545.             if( $flg == #TRUE ) {
  546.                 com.getString( 0, #TRUE, #TRUE );
  547.                 $ptr2 = file.tell( $LogId );
  548.             }
  549.         }
  550.         interval    {
  551.             if( com.isCD( $$COM.PORT ) == #FALSE ) {
  552.                 if( $haltFlg == #TRUE ) {
  553.                     exit;
  554.                 }
  555.                 AUTO.disconnect( #FALSE );
  556.                 goto COM.END;
  557.             }
  558.         }
  559.     }
  560.     if( $flg == #TRUE ) {
  561.         //---   フラッシュニュースの記録を       ---//
  562.         //---   インデックスファイルに書き込む   ---//
  563.         AUTO.writeIdx([[0x501,[15,[1,5,-1,-1,-1,-1,-1,-1,-1,-1]]],
  564.                        [0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
  565.     }
  566.     AUTO.waitPrompt( #FALSE );
  567.  
  568.  
  569.  
  570.     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  571.     //+++                            後処理                              +++//
  572.     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  573. COM.END:
  574.     sys.popCursor();
  575.     sys.deleteInt("AUTO.interruptFunc");
  576.     if( dialog.check() == #TRUE ) {
  577.         dialog.close();
  578.     }
  579.     $LogId = AUTO.getLogFileId();
  580.     $IdxId = AUTO.getIdxFileId();
  581.     if( AUTO.getHaltFlg() != 0 ) {
  582.         xfer.endText( $LogId );
  583.     }
  584.     file.close( $LogId );
  585.     $list = lsi.getInfo( $IdxId );
  586.     list.del1st( $list );
  587.     list.put1st( $list, AUTO.getIdxNum());
  588.     lsi.setInfo( $IdxId, $list );
  589.     lsi.close(  $IdxId );
  590.     sys.startIntRec();
  591.     AUTO.setComFlg( #FALSE );
  592.     $LogId          = #FALSE;
  593.     $IdxId          = #FALSE;
  594.  
  595.     //---   通信続行中断の場合   ---//
  596.     if( AUTO.getHaltFlg() == 2 ) {
  597. MANUAL.COM:
  598.         //---   手動通信モードに移行   ---//
  599.         sys.pushCursor( 81 );
  600.         $$BIN.AUTO.B = #TRUE;
  601.         obj.beginUpdateButton();
  602.         local.manuTrans();
  603.         local.btnConnectMode();
  604.         obj.endUpdateButton();
  605.         sys.enableMenu( #TRUE );
  606.         sys.enableButton( #TRUE );
  607.         sys.pushCursor( 80 );
  608.  
  609.         // 手動通信モード時は、スクリプト実行優先度を強制的に下げる
  610.         $priority.fore = $$PRIORITY.FORE;
  611.         $priority.back = $$PRIORITY.BACK;
  612.         $$PRIORITY.FORE = 0;
  613.         $$PRIORITY.BACK = 0;
  614.         $logout = #FALSE;
  615.         comtable( $a, 0 ) {
  616.             "LOG OUT --- %2d/%2d/%2d    %2d:%2d:%2d"    {
  617.                                                 // ログアウト時間の記録
  618.                 if( $logout == #FALSE ) {
  619.                     trd.setData( AUTO.getTrdId(), [1,3], str.right( $a, 20 ));
  620.                     AUTO.setTrdUpdateFlg();
  621.                     $logout = #TRUE;
  622.                 }
  623.             }
  624.             interval    {
  625.                 if( com.isCD( $$COM.PORT ) == #FALSE ) {
  626.                     exit;
  627.                 }
  628.             }
  629.         }
  630.         $$PRIORITY.FORE = $priority.fore;
  631.         $$PRIORITY.BACK = $priority.back;
  632.         sys.popCursor();
  633.         sys.disableButton( #TRUE );
  634.         sys.disableMenu( #TRUE );
  635.  
  636.         //---   手動通信の終了   ---//
  637.         if( com.isDTR( $$COM.PORT ) == #TRUE ) {
  638.             local.comClose();
  639.         }
  640.         local.manuEnd();
  641.         $OpenFlg = #FALSE;
  642.         sys.popCursor();
  643.         $$BIN.AUTO.B = #FALSE;
  644.     }
  645.  
  646. DISCONNECT:
  647.     if( $OpenFlg == #TRUE ) {
  648.         local.comClose();
  649.         $OpenFlg = #FALSE;
  650.     }
  651.     event.unmask( @DISCONNECT );
  652.     event.unmask( @CONNECT );
  653.     return;
  654. }
  655. event    @CLOSE.EXTERN {
  656.     if( $OpenFlg == #TRUE ) {
  657.         if( $LogId != #FALSE ) {
  658.             $LogId = AUTO.getLogFileId();
  659.             xfer.endText( $LogId );
  660.             file.close( $LogId );
  661.         }
  662.         if( $IdxId != #FALSE ) {
  663.             $list = lsi.getInfo( $IdxId );
  664.             list.del1st( $list );
  665.             list.put1st( $list, AUTO.getIdxNum());
  666.             lsi.setInfo( $IdxId, $list );
  667.             lsi.close( $IdxId );
  668.         }
  669.         local.comClose();
  670.         AUTO.setComFlg( #FALSE );
  671.     }
  672.     if( dialog.check() == #TRUE ) {
  673.         sys.popCursor();
  674.         dialog.close();
  675.     }
  676.     sys.local( $OpenFlg      );
  677.     sys.local( $LogId        );
  678.     sys.local( $IdxId        );
  679.  
  680.     sys.deleteInt("AUTO.interruptFunc");
  681.     event.unmask( @DISCONNECT );
  682.     event.unmask( @CONNECT );
  683.     sys.startIntRec();
  684.     return;
  685. }
  686. event    @ERROR {
  687.     if( dialog.check() == #TRUE ) {
  688.         dislog.close();
  689.     }
  690.     sys.startIntRec();
  691.     AUTO.fatalError();
  692.     event.mainLoop();
  693. }
  694.